import { userlist, usercount } from "../../../request/api";
// 菜单模块
const state = {
  //管理员列表
  userList: [],
  pageSize: 3, //每页展示的条数
  pageNum: 1, //页码
  count: 0, //总条数
};
const getters = {
  //获取管理员列表
  getUser(state) {
    return state.userList;
  },
  //获取总条数
  getCount(state) {
    return state.count;
  },
  //获取每页展示的条数
  getSize(state) {
    return state.pageSize;
  },
};
const mutations = {
  //列表
  REQ_USERLIST(state, payload) {
    state.userList = payload;
  },
  //总条数
  REQ_USERCOUNT(state, payload) {
    state.count = payload;
  },
  //修改页码
  REQ_CHANGEPAGE(state, payload) {
    state.pageNum = payload;
  },
};
const actions = {
  //获取列表行动
  getUserAction(context) {
    console.log(context, "上下文对象");
    userlist({
      size: context.state.pageSize,
      page: context.state.pageNum,
    }).then((res) => {
      // console.log(res,'列表')
      /* 
        当删除遇见不是第一页的最后一条数据，删除成功之后获取列表 需要把页码减一否则页面就会重现空数据
      */
      //目的是： 把后端返回的null 转化成为[]
      let list = res.list ? res.list : [];
      if (context.state.pageNum != 1 && list.length == 0) {
        context.dispatch("changePageAction", context.state.pageNum - 1);
      } else {
        context.commit("REQ_USERLIST", list);
      }
    });
  },
  //获取总条数
  getCountAction({ commit }) {
    usercount().then((res) => {
      // console.log(res,'总条数')
      commit("REQ_USERCOUNT", res.list[0].total);
    });
  },
  //封装一个修改页码并重新调用列表的行动方法
  changePageAction(context, payload) {
    //先去修改页码
    context.commit("REQ_CHANGEPAGE", payload);
    //重新调用列表
    context.dispatch("getUserAction");
  },
};

export default {
  state,
  getters,
  mutations,
  actions,
  namespaced: true,
};
